#include<stdio.h>
#include<cstring>
int n,a[200002],k[200002][3],y[200002][3],p,l,oiu,SS,BB,q[200002][2],B;
int main() {
//	freopen("fruit.in","r",stdin);
//	freopen("fruit.out","w",stdout);
	scanf("%d",&n);
	for(int i=1; i<=n; i++) {
		scanf("%d",&a[i]);
	}
	for(int i=1; i<=n; i++) {
		if(a[i]!=a[i-1]) p++,k[p][0]=i,k[p][2]=a[i],k[p-1][1]=l,l=1;
		else l++;
	}
	p++,k[p-1][1]=l;
	int EEE=n;
	while(EEE>0) {
		oiu++;
		if(oiu%2==1) {
			memset(y,0,sizeof(y));
			memset(q,0,sizeof(q));
			for(int i=1; i<p; i++) {
				if(k[i][1]>0) {
					printf("%d ",k[i][0]++);
					EEE--;
					k[i][1]--;
				}
			}
			for(int i=1; i<p; i++) {
				for(int j=1; j<=k[i][1]; j++)
					q[++B][0]=k[i][2],q[B][1]=k[i][0]++;
			}

			l=p=0;
			for(int i=1; i<=B; i++) {
				if(q[i][0]!=q[i-1][0]) SS++,y[SS][0]=q[i][1],y[SS][2]=q[i][0],y[SS-1][1]=BB,BB=1;
				else BB++;
			}
			SS++,y[SS-1][1]=BB;
		} else {
			memset(k,0,sizeof(k));
			memset(q,0,sizeof(q));
			
			for(int i=1; i<SS; i++) {
				if(y[i][1]>0) {
					printf("%d ",y[i][0]++);
					EEE--;
					y[i][1]--;
				}
			}
			for(int i=1; i<SS; i++) {
				for(int j=1; j<=y[i][1]; j++)
					q[++B][0]=y[i][2];
			}

			l=p=0;
			for(int i=1; i<=B; i++) {
				if(q[i][0]!=q[i-1][0]) p++,k[p][0]=q[i][1],k[p][2]=q[i][0],k[p-1][1]=l,l=1;
				else l++;
			}
			p++,k[p-1][1]=l;
		}
		printf("\n");
	}

	return 0;
}
